package com.chb.test.waitAndnotify_08;

public class Foodie extends Thread{
    // 消费者
    @Override
    public void run() {
        while (true) {
            synchronized (Desk.look) {
                if(Desk.count == 0) {
                    break;
                } else {
                    /*
                       判断桌上是否有面条
                       如果没有就等待
                       如果有就开吃
                       吃完之后唤醒厨师接着做
                    */
                    switch (Desk.foodFlag) {
                        case 0:
                            try {
                                Desk.look.wait(); // 唤醒线程
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            break;
                        case 1:
                            Desk.count --;
                            System.out.println(getName() + "已吃完面条，当前还剩余：" + Desk.count + "碗面条");
                            Desk.foodFlag = 0; // 面条吃完。桌子上的面条状态变成0
                            Desk.look.notifyAll(); // 唤醒这把锁绑定的所有线程
                            break;
                    }
                }
            }
        }
    }
}
